@tool
def sql_agent1(user_query: str) -> str:
    """查询sql"""
    result = sql_agent.invoke({"messages": [{"role": "user", "content": user_query}]})
    return result["messages"][-1].content

@tool
def visualization_agent1(user_query: str) -> str:
    """可视化图表"""
    result = visualization_agent.invoke({"messages": [{"role": "user", "content": user_query}]})
    return result["messages"][-1].content

tools1 = [sql_agent1, visualization_agent1]

agent = create_agent(
    model=llm,
    tools=tools1,
    system_prompt=VISUALIZATION_PROMPT
)

# ─── 第四步：使用 ───
res = agent.invoke({"messages": [
    {"role": "user",
     "content": "查询员工表所有数据并展示图形"
     }]})
print(res['messages'][-1].content)
print(res)



根据查询和可视化结果，为您汇报如下：

---

## 📋 员工表全部数据

| id | 姓名 | 部门 | 薪资 | 入职日期 |
|---|---|---|---|---|
| 1 | 张三 | 技术部 | 20,000 元 | 2023-01-15 |
| 2 | 李四 | 销售部 | 11,000 元 | 2023-02-20 |
| 3 | 王五 | 技术部 | 16,000 元 | 2022-11-10 |
| 4 | 赵六 | 人力资源 | 5,000 元 | 2023-03-01 |
| 5 | 钱七 | 销售部 | 17,000 元 | 2022-12-05 |

---

## 📊 可视化图表已生成

图表包含 **1 行 2 列** 的子布局：

1. **左图**：各员工薪资横向条形图（按薪资从高到低排列，不同部门用不同颜色区分）
2. **右图**：各部门平均薪资柱状图

---
...
---

如需进一步分析（例如：员工入职时间分布、薪资与部门关系、与其他表的关联分析等），请随时告诉我！
{'messages': [HumanMessage(content='查询员工表所有数据并展示图形', additional_kwargs={}, response_metadata={}, id='200b90a5-fad1-4687-9d45-1284575d3b52'), AIMessage(content='', additional_kwargs={'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 69, 'prompt_tokens': 399, 'total_tokens': 468, 'completion_tokens_details': None, 'prompt_tokens_details': {'audio_tokens': None, 'cached_tokens': 256}, 'cached_tokens': 256}, 'model_provider': 'openai', 'model_name': 'kimi-k2.6', 'system_fingerprint': None, 'id': 'chatcmpl-6a43cdd595d281eb3e036517', 'finish_reason': 'tool_calls', 'logprobs': None}, id='lc_run--019f18dc-073c-7bc0-9c14-2b012d436a97-0', tool_calls=[{'name': 'sql_agent1', 'args': {'user_query': '查询 employees_df 员工表的所有数据'}, 'id': 'sql_agent1:0', 'type': 'tool_call'}], invalid_tool_calls=[], usage_metadata={'input_tokens': 399, 'output_tokens': 69, 'total_tokens': 468, 'input_token_details': {'cache_read': 256}, 'output_token_details': {}}), ToolMessage(content='查询完成。表名应为 `employees`，共 **5 名员工**，全部数据如下：\n\n| id | 姓名 | 部门 | 薪资（元） | 入职日期 |\n|---|------|------|-----------|----------|\n| 1 | 张三 | 技术部 | 20,000.00 | 2023-01-15 |\n| 2 | 李四 | 销售部 | 11,000.00 | 2023-02-20 |\n| 3 | 王五 | 技术部 | 16,000.00 | 2022-11-10 |\n| 4 | 赵六 | 人力资源 | 5,000.00 | 2023-03-01 |\n| 5 | 钱七 | 销售部 | 17,000.00 | 2022-12-05 |\n\n**简要洞察：**\n- **技术部**平均薪资较高（1.8 万），**销售部**薪资差异较大（1.1 万～1.7 万）。\n- **赵六**薪资最低（5,000），可能为实习生或助理岗。\n- 入职时间集中在 2022 年底至 2023 年初，属于较新的团队。', name='sql_agent1', id='47cbf3f5-e40c-412a-b302-99206d68303f', tool_call_id='sql_agent1:0'), AIMessage(content='', additional_kwargs={'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 251, 'prompt_tokens': 704, 'total_tokens': 955, 'completion_tokens_details': None, 'prompt_tokens_details': {'audio_tokens': None, 'cached_tokens': 256}, 'cached_tokens': 256}, 'model_provider': 'openai', 'model_name': 'kimi-k2.6', 'system_fingerprint': None, 'id': 'chatcmpl-6a43ce1195d281eb3e036557', 'finish_reason': 'tool_calls', 'logprobs': None}, id='lc_run--019f18dc-f323-7802-88cb-ea25cfb5345d-0', tool_calls=[{'name': 'visualization_agent1', 'args': {'user_query': "基于 employees_df 员工表数据，创建以下可视化图表：\n1. 各员工薪资的横向条形图，按薪资从高到低排列\n2. 各部门平均薪资的柱状图\n3. 使用子布局（1行2列），图表尺寸为 figsize=(14, 6)\n4. 绑图前设置中文字体：plt.rcParams['font.sans-serif'] = ['SimHei', 'PingFang SC', 'DejaVu Sans']\n5. 设置 plt.rcParams['axes.unicode_minus'] = False\n6. 标题用英文，添加坐标轴标签\n7. 在图表上标注具体数值\n8. 用不同颜色区分不同部门的员工"}, 'id': 'visualization_agent1:1', 'type': 'tool_call'}], invalid_tool_calls=[], usage_metadata={'input_tokens': 704, 'output_tokens': 251, 'total_tokens': 955, 'input_token_details': {'cache_read': 256}, 'output_token_details': {}}), ToolMessage(content='图表已成功生成！以下是分析结果和业务洞察：\n\n---\n\n## 📊 可视化图表说明\n\n我创建了一个 **1行2列** 的子布局，包含：\n\n| 图表 | 内容 |\n|------|------|\n| **左图** | 各员工薪资横向条形图（按薪资从高到低排列，从上到下） |\n| **右图** | 各部门平均薪资柱状图 |\n\n**颜色映射**：\n- 🔵 **蓝色** = 技术部\n- 🟠 **橙色** = 销售部\n- 🟢 **绿色** = 人力资源\n\n---\n\n## 💡 业务洞察\n\n### 1. 员工薪资排名\n| 排名 | 姓名 | 部门 | 薪资 |\n|------|------|------|------|\n| 1 | 张三 | 技术部 | **20,000 元** |\n| 2 | 钱七 | 销售部 | **17,000 元** |\n| 3 | 王五 | 技术部 | **16,000 元** |\n| 4 | 李四 | 销售部 | **11,000 元** |\n| 5 | 赵六 | 人力资源 | **5,000 元** |\n\n### 2. 部门薪资分析\n- **技术部** 平均薪资最高（18,000元），说明技术人才在市场上稀缺性高，公司给予了有竞争力的薪酬。\n- **销售部** 平均薪资居中（14,000元），但内部差距较大（17,000 vs 11,000），这可能反映了销售业绩差异或资历不同。\n- **人力资源** 平均薪资最低（5,000元），仅有一名员工赵六，建议关注该岗位薪酬是否具有市场竞争力，以免影响招聘和留人。\n\n### 3. 建议\n- **技术部** 薪资最为均衡，是公司的核心人才梯队。\n- **销售部** 建议建立更清晰的薪酬体系，缩小同岗位间的薪资差距。\n- **人力资源** 岗位薪酬明显偏低，建议评估市场薪资水平后适当调整。', name='visualization_agent1', id='9f11db21-b69f-4359-b439-ffcd0bf92b08', tool_call_id='visualization_agent1:1'), AIMessage(content='根据查询和可视化结果，为您汇报如下：\n\n---\n\n## 📋 员工表全部数据\n\n| id | 姓名 | 部门 | 薪资 | 入职日期 |\n|---|---|---|---|---|\n| 1 | 张三 | 技术部 | 20,000 元 | 2023-01-15 |\n| 2 | 李四 | 销售部 | 11,000 元 | 2023-02-20 |\n| 3 | 王五 | 技术部 | 16,000 元 | 2022-11-10 |\n| 4 | 赵六 | 人力资源 | 5,000 元 | 2023-03-01 |\n| 5 | 钱七 | 销售部 | 17,000 元 | 2022-12-05 |\n\n---\n\n## 📊 可视化图表已生成\n\n图表包含 **1 行 2 列** 的子布局：\n\n1. **左图**：各员工薪资横向条形图（按薪资从高到低排列，不同部门用不同颜色区分）\n2. **右图**：各部门平均薪资柱状图\n\n---\n\n## 💡 关键业务洞察\n\n| 排名 | 姓名 | 部门 | 薪资 |\n|:---:|:---:|:---:|:---:|\n| 1 | 张三 | 技术部 | **20,000 元** |\n| 2 | 钱七 | 销售部 | **17,000 元** |\n| 3 | 王五 | 技术部 | **16,000 元** |\n| 4 | 李四 | 销售部 | **11,000 元** |\n| 5 | 赵六 | 人力资源 | **5,000 元** |\n\n### 部门薪资对比\n- **技术部** 平均薪资最高（18,000 元），两名员工薪资较为均衡，说明技术人才是公司重点保留的核心力量。\n- **销售部** 平均薪资居中（14,000 元），但内部差距大（17,000 vs 11,000），相差 6,000 元，可能反映业绩差异或资历差距。\n- **人力资源部** 仅赵六一人，薪资 5,000 元，显著低于其他部门，建议关注该岗位薪酬竞争力，避免影响招聘和留人。\n\n### 团队概况\n- 公司共 5 名员工，属于小规模团队。\n- 入职时间集中在 2022 年底至 2023 年初，团队组建时间较短。\n- 技术部 2 人、销售部 2 人、人力资源 1 人，人员配置基本合理。\n\n---\n\n如需进一步分析（例如：员工入职时间分布、薪资与部门关系、与其他表的关联分析等），请随时告诉我！', additional_kwargs={'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 652, 'prompt_tokens': 1320, 'total_tokens': 1972, 'completion_tokens_details': None, 'prompt_tokens_details': {'audio_tokens': None, 'cached_tokens': 512}, 'cached_tokens': 512}, 'model_provider': 'openai', 'model_name': 'kimi-k2.6', 'system_fingerprint': None, 'id': 'chatcmpl-6a43cee7a4a8f533b6776ed5', 'finish_reason': 'stop', 'logprobs': None}, id='lc_run--019f18e0-3530-75f1-b295-a7412a96f64b-0', tool_calls=[], invalid_tool_calls=[], usage_metadata={'input_tokens': 1320, 'output_tokens': 652, 'total_tokens': 1972, 'input_token_details': {'cache_read': 512}, 'output_token_details': {}})]}
Output is truncated. View as a scrollable element or open in a text editor. Adjust cell output settings...